home *** CD-ROM | disk | FTP | other *** search
- #include "bbs.h"
-
- extern char *MyVerStr;
- extern ULONG ConfBaseLine;
- extern int ValidUser;
- extern char ReservedName[40];
- extern UBYTE NodeWork[],WhichHist,NumHistItems;
- extern int CustomCommand(char *str1, char *str2,int Private);
- char LSTR[300];
- extern char lang[];
- extern char langtitle[];
- void CallerIDLog(int opt);
- char mybbstitle[50];
- extern char SystemPrompt[80];
- extern int Stealth;
- UWORD CheckUserOnLine(struct User *user,UWORD check)
- {
- struct User *tuser;
- BPTR fh,lock;
- char temp[10];
- UWORD error=0,stat,loop;
-
- if(check) {
- if(tuser=(struct User *)AllocMem(sizeof(struct User),MEMF_ANY|MEMF_CLEAR)) {
- loop=0;
- error=1;
- do {
- if(loop==Cmds->AcLvl[LVL_NODE_NUMBER]) loop++;
-
- sprintf(GSTR1,"%snode%ld",Cmds->BBSLoc,loop);
- if(lock=Lock(GSTR1,ACCESS_READ)) {
- UnLock(lock);
- sprintf(GSTR1,"%snode%ld.user",NodeWork,loop);
- if(fh=Open(GSTR1,MODE_OLDFILE)) {
- if(stat=Read(fh,(void *)tuser,sizeof(struct User))) {
- if(StringCompare(tuser->Name,user->Name)==SUCCESS) {
- error=0;
- lock=NULL;
- }
- }
- Close(fh);
- }
- }
- loop++;
- } while(lock!=NULL);
- FreeMem(tuser,sizeof(struct User));
- } else AEPutStr("Can't allocate memory for user test\r\n");
- } else error=1;
-
- if(error) {
- error=0;
-
- /* Write the current user info to Node%d.user */
-
- sprintf(GSTR1,"%snode%ld.user",NodeWork,Cmds->AcLvl[LVL_NODE_NUMBER]);
- if(fh=Open(GSTR1,MODE_NEWFILE))
- {
- strcpy(temp,user->Pass);
- strcpy(user->Pass,"ENCRYPTED");
- if(stat=Write(fh,(void *)user,sizeof(struct User))) error=1;
- }
- Close(fh);
-
- strcpy(user->Pass,temp);
-
- /* Write current userkeys information */
-
- sprintf(GSTR1,"%snode%ld.userkeys",NodeWork,Cmds->AcLvl[LVL_NODE_NUMBER]); /* file name */
- if(fh=Open(GSTR1,MODE_NEWFILE))
- {
- if(stat=Write(fh,(void *)&User_keys,sizeof(struct UserKeys))) error=1;
- }
- Close(fh);
- }
-
- return(error);
- }
-
- void CallersLogDivider(void)
- {
- CallersLog("**************************************************************\n");
-
- }
-
- extern char ID_TIME[];
- extern char ID_DATE[];
- extern char ID_NAME[];
- extern char ID_NMBR[];
-
- void CallerIDLog(int opt)
- {
- FILE *fi;
- if((Sopt->Toggles[15] || Sopt->Toggles[16]) && opt)
- {
- sprintf(GSTR1,"%sNode%d/CallerIDlog",Cmds->BBSLoc,Cmds->AcLvl[LVL_NODE_NUMBER]);
- fi=fopen(GSTR1,"a");
- fprintf(fi,"**************************************************************\n");
-
- if(Sopt->Toggles[16])
- fprintf(fi,"\t(%s - %s [%16.16s / %s]) \n",ID_DATE,ID_TIME,ID_NMBR,ID_NAME);
- else
- fprintf(fi,"\t(%s - %s [%16.16s])\n",ID_DATE,ID_TIME,ID_NMBR);
- fclose(fi);
- return;
- }
- if(Sopt->Toggles[15] || Sopt->Toggles[16])
- {
- sprintf(GSTR1,"%sNode%d/CallerIDlog",Cmds->BBSLoc,Cmds->AcLvl[LVL_NODE_NUMBER]);
- fi=fopen(GSTR1,"a");
-
- fprintf(fi,"\t%s\n",User.Name);
- fclose(fi);
- }
- }
- void UDLog(char *stringout)
- {
- FILE *GFP1;
- if(!(GET_BIT(ACS_DO_UD_LOG))) return;
-
- sprintf(LSTR,"%sNode%u/UDLog",Cmds->BBSLoc,Cmds->AcLvl[LVL_NODE_NUMBER]);
- GFP1=fopen(LSTR,"r");
- if(GFP1==NULL) GFP1=fopen(LSTR,"w");
- else {
- fclose(GFP1);
- GFP1=fopen(LSTR,"a");
- }
-
- if(GFP1) {
- fprintf(GFP1,stringout);
- fclose(GFP1);
- }
- }
-
- void UDLogDivider(void)
- {
- UDLog("**************************************************************\n");
- }
-
- void DisplayUserToCallersLog(int Udonly)
- {
- extern struct myst my_struct;
-
- if(!Udonly) { (void)CallersLogDivider();
- CallerIDLog(0); }
- else (void)UDLogDivider();
-
- Time_system=time(NULL);
-
- sprintf(GSTR2,"%s",ctime(&Time_system));
- (void)Convert_CTime_To_Date(GSTR2,GSTR1,GSTR3);
-
- if(User.Times_Called==0) {
- my_struct.newuser = TRUE;
- sprintf(GSTR2,"%s (%s) NEW [%d] %s (%s) %s\n",GSTR1,GSTR3,User.Slot_Number,User.Name,ConnectString,User.Location);
- } else {
- sprintf(GSTR2,"%s (%s) [%d] %s (%s) %s\n",GSTR1,GSTR3,User.Slot_Number,User.Name,ConnectString,User.Location);
- my_struct.newuser = FALSE;
- }
-
- if(!Udonly) {
- User.Times_Called +=1;
- CallersLog(GSTR2);
- } else
- UDLog(GSTR2);
-
- }
-
- void LogOffLog(char *STAT)
- {
- Time_system=time(NULL);
-
- sprintf(GSTR2,"%s",ctime(&Time_system));
- (void)Convert_CTime_To_Date(GSTR2,GSTR1,GSTR3);
-
- if(STAT[0]=='N')
- sprintf(GSTR2,"%s (%s) %s Off Normally\n",GSTR1,GSTR3,User.Name);
- else
- sprintf(GSTR2,"%s (%s) %s Off %s\n",GSTR1,GSTR3,User.Name,STAT);
-
- (void)CallersLog(GSTR2);
- }
-
- static int New_Account_Sequence(void)
- {
- int mystat;
- int command_accepted;
- sprintf(GSTR1,"%sACCESS/Preset.1",Cmds->BBSLoc);
-
- strcpy(User.Pass,"");
-
- User.Slot_Number=0;
- User.Sec_Status=IntFromIcon(GSTR1,"PRESET.ACCESS");
- User.Sec_Board=IntFromIcon(GSTR1,"PRESET.RATIO_TYPE");
- User.Sec_Library=IntFromIcon(GSTR1,"PRESET.RATIO");
- User.Time_Limit=IntFromIcon(GSTR1,"PRESET.TIME_LIMIT");
- User.Messages_Posted=0;
- User.New_User=1;
- User.NewSinceDate=0;
- User.Uploads=0;
- User.Downloads=0;
- User.ConfRJoin=IntFromIcon(GSTR1,"PRESET.CONFRJOIN");
-
- if(User.ConfRJoin==NULL) User.ConfRJoin=1;
- User.Time_Last_On=0L;
- User.Time_Used=0L;
- User.Time_Total=User.Time_Limit;
- User.Times_Called=0;
- User.Bytes_Download=0L;
- User.Bytes_Upload=0L;
- User.Protocol = 'Z';
- User.Time_Last_On=time(NULL);
- User.Daily_Bytes_Limit=IntFromIcon(GSTR1,"PRESET.DAILY_BYTE_LIMIT");
- GetFromIconStr(GSTR1,"PRESET.AREA",User.Conference_Access);
- strcpy(User.Location," ");
-
- StatPrintUser(&User);
-
- sprintf(GSTR3,"%sGuestLogon",Sopt->NodeScreen);
- if(!(GI1=ChecktoDisplay(GSTR3,GSTR2,0,1)))
- UnAvailNotice(GSTR2,GSTR3);
- if(User.Slot_Number==0) {
- mystat=DoPause();
- if(mystat<0) return(mystat);
- command_accepted=JCom(); /* join */
- if(command_accepted<0) return(command_accepted);
- AEPutStr("\r\n");
- }
-
- return(0);
- }
-
- void DisplayReserveNotice(void)
- {
- sprintf(GSTR1,"\r\nNode %d is reserved right now, please try again later\r\n",Cmds->AcLvl[LVL_NODE_NUMBER]);
- AEPutStr(GSTR1);
- }
-
- int DoReserve(char *username)
- {
- if(ReservedName[0]!='\0') {
- if(stricmp(username,ReservedName)) {
- DisplayReserveNotice();
- Delay(60);
- return(1);
- }
- }
- return(0);
- }
-
- static int CheckBaudCallingTime(int Online_Baud)
- {
-
- int Time,Start=0,Fin=0;
- char str[70],str2[10];
- char t[100],t1[20];
- sprintf(t,"%sNode%d/TIMES.DEF",Cmds->BBSLoc,Cmds->AcLvl[LVL_NODE_NUMBER]);
-
- if(GET_BIT(ACS_OVERRIDE_TIMES))return(1);
-
- strcpy(str,GetTheTime(Time_connect));
- str2[0]=str[0];
- str2[1]=str[1];
- str2[2]=str[3];
- str2[3]=str[4];
- str2[4]='\0';
-
- Time=(int)atoi(str2);
- sprintf(t1,"START.%d",Online_Baud);
- Start=IntFromIcon(t,t1);
- sprintf(t1,"END.%d",Online_Baud);
- Fin=IntFromIcon(t,t1);
- if(Fin<Start)
- {
- if(Time>=Fin && Time<Start) return(0);
- return(1);
- }
- if(Time>=Start) { if(Time<=Fin) return(1); return(0);}
- }
-
-
-
- static int BaudTime(int Online_Baud)
- {
- int stat;
-
- stat=CheckBaudCallingTime(Online_Baud);
- if(!stat) {
- sprintf(GSTR1,"%sNotTime%ld",NodeStr,Online_Baud);
- if(!(stat=ChecktoDisplay(GSTR1,GSTR2,0,1))) {
- sprintf(GSTR1,"\r\n%ld baud is not allowed at this time.\r\n\r\n",Online_Baud);
- AEPutStr(GSTR1);
- }
- stat=FALSE;
- Delay(120L);
- }
- return(stat);
- }
-
- /************************************************** check User logon ****/
- /*** ADD IF new user, read bulletin1 rules ***/
- int rnd(int );
-
- int Logon_Sequence(void)
- {
- #define MY_CONNECTMSG "You are Connected to"
- extern struct myst my_struct;
- extern BOOL QuickAllowed;
- char acctfile[133], username[40];
- int stat, UUCP, tries;
- BPTR f, fp;
-
- Time_holder=0;
- ValidUser=2;
- AnsiColor=1;
- if(Cmds->SysPass[0]!='\0' && Stealth) {
-
- for(tries=1; tries<4; tries++) {
- sprintf(GSTR3,"%sPrivate",Sopt->NodeScreen);
- if(!(ChecktoDisplay(GSTR3,GSTR1,0,1)))
- UnAvailNotice(GSTR1,GSTR3);
- AEPutStr(SystemPrompt);
- stat=LineInputConverted("",GSTR1,30,KEYBOARD_TIMEOUT);
- if(stat<0) return(SLEEP_LOGOFF);
-
- if(Whence_The_Logon>=REMOTE_LOGON) {
- stat=CheckCarrier();
- if(stat==FALSE) return(SLEEP_LOGOFF);
- }
-
- stat=StringCompare(GSTR1,Cmds->SysPass);
- if(stat==SUCCESS) break;
-
- }
-
- if(tries==4) {
- (void)CallersLog("System Password Failure\n");
- return(FAILURE);
- }
- AEPutStr("\r\n");
- }
-
- ConPutStr(" p");
-
- sprintf(GSTR3,"%5d",Online_Baud);
- StatMessage(73,1,GSTR3);
-
- Delay(50L);
- /* check if NoCallers File exists */
- sprintf(GSTR3,"%sNoCallersAt%d",Sopt->NodeScreen,Online_Baud);
- fp=Open(GSTR3,MODE_OLDFILE);
- if(fp!=NULL) {
- Close(fp);
- MenuSend(GSTR3);
- Delay(200L);
- goto LogoffEnd;
- }
-
- my_struct.sessiondbytes = 0; /* DOwnloaded Bytes for this user, this session */
- strcpy(acctfile,UserDataLoc);
- //sprintf(acctfile,"%sUser.Data",Cmds->BBSLoc);
-
- Time_system=time(NULL);
- //(JOE)---06-21-92
-
- AEPutStr(ConnectString);
-
- if(mybbstitle[0]!=NULL)
- {
- sprintf(GSTR1,"\r\n\r\nWelcome to %s, located in %s",Cmds->BBSName,mybbstitle);
- } else {
- sprintf(GSTR1,"\r\n\r\nWelcome to %s.",Cmds->BBSName);
- }
-
- AEPutStr(GSTR1);
- AEPutStr("\r\nRunning AmiExpress BBS - Beta Tester Version\r\n");
- sprintf(GSTR1,"You are connected to Node %d at %ld baud",Cmds->AcLvl[LVL_NODE_NUMBER],Online_Baud);
- AEPutStr(GSTR1);
- strcpy(GSTR2,GetTheTime(Time_system));
- strcpy(GSTR3,GetTheDate(Time_system));
- sprintf(GSTR1,"\r\nConnection occured at %s %s.\r\n",GSTR2,GSTR3);
- AEPutStr(GSTR1);
- AEPutStr("\r\n");
-
- sprintf(GSTR1,"%sCommands/SysCmd/",Cmds->BBSLoc);
- strcpy(GSTR2,"FRONTEND");
- CustomCommand(GSTR1,GSTR2,1);
- /*-- 11w end */
- QuickFlag=0;
- User.Sec_Status=255;
-
- if(Sopt->Toggles[15] || Sopt->Toggles[16])
- {
- ConPutStr("\r\n >"); ConPutStr(ID_TIME); ConPutStr("\r\n");
- ConPutStr(" >"); ConPutStr(ID_DATE); ConPutStr("\r\n");
- ConPutStr(" >"); ConPutStr(ID_NMBR); ConPutStr("\r\n");
- if(Sopt->Toggles[16]) { AEPutStr(" >"); ConPutStr(ID_NAME); ConPutStr("\r\n"); }
- ConPutStr("\r\n");
- }
- sprintf(GSTR1,"%sCommands/syscmd/",Cmds->BBSLoc);
-
- strcpy(GSTR2,"ANSI");
- if(!CustomCommand(GSTR1,GSTR2,1))
- {
- AEPutStr("ANSI graphics (Y/n)? ");
-
-
- stat=LineInput("",GSTR1,10,KEYBOARD_TIMEOUT/2);
-
- if(stat<0) return(SLEEP_LOGOFF);
- if(Whence_The_Logon>=REMOTE_LOGON) {
- stat=CheckCarrier();
- if(stat==FALSE) return(SLEEP_LOGOFF);
- }
- if(GSTR1[0]=='N'||GSTR1[0]=='n') {
- my_struct.AnsiColor=0;
- AnsiColor=0;
- }
-
- QuickFlag=0;
- if((GSTR1[2]=='Q'||GSTR1[2]=='q') && QuickAllowed)
- QuickFlag=1;
- }
-
- /*-- Gotta Know the pasword ---*/
- if(Cmds->SysPass[0]!='\0' && !Stealth) {
- sprintf(GSTR3,"%sPrivate",Sopt->NodeScreen);
- if(!(stat=ChecktoDisplay(GSTR3,GSTR1,0,1)))
- UnAvailNotice(GSTR1,GSTR3);
- for(tries=1; tries<4; tries++) {
- AEPutStr(SystemPrompt);
- stat=LineInputConverted("",GSTR1,30,KEYBOARD_TIMEOUT);
- if(stat<0) return(SLEEP_LOGOFF);
-
- if(Whence_The_Logon>=REMOTE_LOGON) {
- stat=CheckCarrier();
- if(stat==FALSE) return(SLEEP_LOGOFF);
- }
-
- stat=StringCompare(GSTR1,Cmds->SysPass);
- if(stat==SUCCESS) break;
-
- AEPutStr("Invalid PassWord\r\n");
- }
-
- if(tries==4) {
- (void)CallersLog("System Password Failure\n");
- return(FAILURE);
- }
- }
-
- if(QuickFlag) goto Begining; /* Skip Logon Screen */
- /*--- end 11w cycle screens --- */
- //(RTS) Tue Jun 23 08:34:08 1992
- /* show a default screen for low end users ?? */
- sprintf(GSTR1,"%sBBSTitle",Sopt->NodeScreen);
- ChecktoDisplay(GSTR1,GSTR3,0,0);
-
- Begining:
- tries=0;
-
- if(ReservedName[0]!='\0') {
- sprintf(GSTR1,"\r\n*** Node %d is reserved right now, for %s ***\r\n",Cmds->AcLvl[LVL_NODE_NUMBER],ReservedName);
- AEPutStr(GSTR1);
- }
- /*---------------LogonLoop-----------------------------------*/
- LogonLoop:
- if(tries>=5) {
- AEPutStr("Too Many Errors, Goodbye!\r\n");
- return(FAILURE);
- }
-
-
- /* Allow custom name_prompt string */
-
- AEPutStr("\r\nEnter your ");
- if(!GetFromIconStr(NodeStr,"NAME_PROMPT",GSTR1))
- {
- AEPutStr("Name");
- } else {
- AEPutStr(GSTR1);
- }
- AEPutStr(" : ");
-
-
-
- NumHistItems=0;
- WhichHist=0;
- HistorySelect=0;
-
- stat=LineInput("",username,28,KEYBOARD_TIMEOUT/2);
- if(stat<0) return(stat);
-
- if(Whence_The_Logon>=REMOTE_LOGON) {
- stat=CheckCarrier();
- if(stat==FALSE) return(SLEEP_LOGOFF);
- }
-
- if(strlen(username)==0) { tries+=1; goto LogonLoop; }
-
- UUCP=0;
- strcpy(GSTR3,username);
- GSTR3[5]='\0';
- strupr(GSTR3);
- strcpy(GSTR1,"UUCP.");
- if(StringCompare(GSTR3,GSTR1)==SUCCESS) {
- UUCP=1;
- strcpy(GSTR3,username+5);
- strcpy(username,GSTR3);
- } else strcpy(GSTR3,username);
-
- stat=ChooseAName(GSTR3,&User,&User_keys,0); /* go get this guys user info */
-
- if(stat<FAILURE)
- return(stat);
- SetEnvStat(ENV_ACCOUNTSEQ);
- if(stat==FAILURE) {
- sprintf(GSTR1,"\r\nThe handle %s is not used on this BBS.\r\n",username);
- AEPutStr(GSTR1);
- // sprintf(GSTR1,"\t The handle %s is not used on this BBS.\n",username);
- //CallersLog(GSTR1); /* (RTS) save this to a file to see who tried to hacked in */
-
- AEPutStr("[R]etry your name or [C]ontinue as a new user? ");
- stat=LineInput("",GSTR1,2,KEYBOARD_TIMEOUT/2);
- if(stat<0) return(stat);
-
- if(GSTR1[0]!='C'&&GSTR1[0]!='c') {
- AEPutStr("\r\n");
- tries+=1;
- goto LogonLoop;
- }
-
- stat=DoReserve(User.Name);
- if(stat) return(FAILURE);
- ConvertAccess();
- if(ReservedName[0]=='\0') {
- stat=BaudTime(Online_Baud);
- if(!stat) return(FAILURE);
- }
-
- if(Cmds->NEW_UserPW[0]!='\0') {
- sprintf(GSTR2,"%sNewUserPW",Sopt->NodeScreen);
- stat=ChecktoDisplay(GSTR2,GSTR3,0,1);
-
- AEPutStr("Enter New User Password: ");
- stat=LineInputConverted("",GSTR3,30,KEYBOARD_TIMEOUT);
- if(stat<0) return(SLEEP_LOGOFF);
- if(Whence_The_Logon>=REMOTE_LOGON) {
- stat=CheckCarrier();
- if(stat==FALSE) return(SLEEP_LOGOFF);
- }
-
- stat=StringCompare(GSTR3,Cmds->NEW_UserPW);
- if(stat!=SUCCESS) {
- tries+=1;
- AEPutStr("Invalid PassWord\r\n");
- goto LogonLoop;
- }
- AEPutStr("Correct\r\n");
- }
-
- strcpy(User.Name,username);
- /* Check for NoNewUsers at xxx Baud */
- sprintf(GSTR1,"%sNoNewAt%d",Sopt->NodeScreen,Online_Baud);
- if((f= Open(GSTR1,MODE_OLDFILE))) {
- Close(f);
- MenuSend(GSTR1);
- Delay(360L);
- goto LogoffEnd;
- }
- /* Check NoNewUsers at all */
- sprintf(GSTR1,"%sNoNewUsers",Sopt->NodeScreen);
- if((f= Open(GSTR1,MODE_OLDFILE))) {
- Close(f);
- MenuSend(GSTR1);
- Delay(360L);
- goto LogoffEnd;
- }
-
- stat=New_Account_Sequence();
- if(stat<=(-1)) return(stat);
- SetEnvStat(ENV_LOGGINGON);
-
- (void)DisplayUserToCallersLog(0);
-
- return(SUCCESS);
- }
- SetEnvStat(ENV_LOGGINGON);
-
- //(RTS) Tue Jun 23 08:36:43 1992
- /*** Check list.. if user appears tell him to call the other node */
-
- /* load the Users account */
- stat=Load_Account((int)User_keys.Number,&User,&User_keys);
- if(stat==FAILURE) {
- AEPutStr("That account has problems\r\n");
- tries+=1;
- goto LogonLoop;
- }
-
- /*- Users accout was deleted --*/
- if(User.Slot_Number==0) {
- AEPutStr("That account has been deleted.\r\n");
- goto LogoffEnd;
- }
- //(JOE) added here, removed from menu.c
- ConvertAccess();
-
- Time_Last_On=User.Time_Last_On;
- stat=DoReserve(User.Name);
- if(stat) return(FAILURE);
-
- if(ReservedName[0]=='\0') {
- stat=BaudTime(Online_Baud);
- if(!stat) return(FAILURE);
- }
-
- if(User.Sec_Status==0) { /* User is locked out the bbs */
- sprintf(GSTR1,"%sLockout-0",Sopt->NodeScreen);
- if(!(stat=ChecktoDisplay(GSTR1,GSTR3,0,1))) {
- UnAvailNotice(GSTR3,GSTR1);
- }
- goto LogoffEnd;
- }
-
- if(User.Sec_Status==1) {
- sprintf(GSTR1,"%sLockout-1",Sopt->NodeScreen);
- if(!(stat=ChecktoDisplay(GSTR1,GSTR3,0,1)))
- UnAvailNotice(GSTR3,GSTR1);
-
- goto LogoffEnd;
- }
-
- /*** gotta update current info before going to CheckUSerOnline */
-
- User_keys.baud_rate = Online_Baud;
-
- StatPrintUser(&User);
-
- ConvertAccess();
- stat=CheckUserOnLine(&User,1);
- if(!stat) {
- CallersLog("User already on another node!\n");
- sprintf(GSTR1,"%sOnlyOnOneNode",Cmds->BBSLoc);
- if(!(stat=ChecktoDisplay(GSTR1,GSTR3,0,1)))
- AEPutStr("You are already logged into another node!\r\n");
- goto LogoffEnd;
- }
-
- FOREVER {
-
- (void)DisplayUserToCallersLog(0);
-
- tries=0;
- do {
- if(tries>2)
- {
- AEPutStr("\r\nExcessive Password Failure\r\n");
- sprintf(GSTR1,"%sCommands/syscmd/",Cmds->BBSLoc);
- strcpy(GSTR2,"PWFAIL");
- CustomCommand(GSTR1,GSTR2,1);
- goto LogoffErr;
- }
-
-
- if(Whence_The_Logon==LOCAL_LOGON)
- {
- stat=SUCCESS; // LOCAL_SYSOP PASSWORD OVERRIDE..
- } else {
-
- /* read users password, decrypt it... */
-
- AEPutStr("PassWord: ");
- stat=LineInputConverted("",GSTR3,32,KEYBOARD_TIMEOUT);
- if(stat<0) return(SLEEP_LOGOFF);
- if(Whence_The_Logon>=REMOTE_LOGON)
- {
- stat=CheckCarrier();
- if(stat==FALSE) return(SLEEP_LOGOFF);
- }
- strupr(GSTR3);
- stat=AECryptCmp(GSTR3,User.PassKey); /* actual pw */
- }
-
-
- if(stat!=SUCCESS)
- {
- sprintf(GSTR2,"\tPassword Failure (%s)\n",GSTR3);
- (void)CallersLog(GSTR2);
- AEPutStr("Invalid PassWord\r\n");
- ++tries;
- }
-
- } while(stat!=SUCCESS);
- #ifdef RTS
- sprintf(GSTR1,"%sPhoneCheck",Cmds->BBSLoc);
- if(f=Open(GSTR1,MODE_OLDFILE)) {
- Close(f);
- tries=0;
- do {
- if(tries>2) {
- AEPutStr("\r\nExcessive PhoneNumber Failure\r\n");
- goto LogoffErr;
- }
- AEPutStr("Last 4 digits of your PhoneNumber: ");
- stat=LineInput("",GSTR3,4,KEYBOARD_TIMEOUT);
- if(stat<0) return(SLEEP_LOGOFF);
- if(Whence_The_Logon>=REMOTE_LOGON) {
- stat=CheckCarrier();
- if(stat==FALSE) return(SLEEP_LOGOFF);
- }
- strcpy(GSTR1,User.PhoneNumber);
- if(strlen(GSTR1)>4)
- strcpy(GSTR1,GSTR1+(strlen(GSTR1)-4));
-
- stat=StringCompare(GSTR3,GSTR1);
- if(stat!=SUCCESS) {
- sprintf(GSTR2,"\tPhoneNumber Failure (%s)\n",GSTR3);
- (void)CallersLog(GSTR2);
- AEPutStr("Invalid PhoneNumber\r\n");
- ++tries;
- }
- } while(stat!=SUCCESS);
- }
- #endif
- StatPrintUser(&User);
- #ifdef RTS
- if(UUCP) {
- if(User.UUCPA) {
- ValidUser=3;
- ConPutStr("\r\nSystem dropping to UUCP...");
- CallersLog("\tReceiving UUCP feed\n");
- PurgeLineEnd();
- if(lfh=Open("NIL:",MODE_OLDFILE)) {
- sprintf(GSTR2,"uucico -D %s -U %u -Getty -7 -xx",Cmds->SerDev,Cmds->SerDevUnit);
- Execute(GSTR2,(DeBuG?0:lfh),(DeBuG?0:lfh));
- Close(lfh);
- }
- PurgeLineStart();
- DropDTR();
- return(FAILURE);
- }
- AEPutStr("UUCP access has been denied!\r\n\r\n");
- }
- #endif
- /* we made it here so we got a online real valid user */
- ValidUser=1;
- return(SUCCESS);
- }
-
- LogoffErr:
- (void)CallersLog("\t* Password Failure *\n");
-
- LogoffEnd:
- return(FAILURE);
- }
-
- void Sysop_Account_Sequence(void)
- {
- Load_Account(1,&User,&User_keys);
-
- //(JOE) added here, removed from menu.c
- Time_Last_On=User.Time_Last_On;
- StatPrintUser(&User);
- ConvertAccess();
- DisplayUserToCallersLog(0);
- SetEnvStat(ENV_LOGGINGON);
-
- sprintf(GSTR1,"%sCommands/syscmd/",Cmds->BBSLoc);
- strcpy(GSTR2,"ANSI");
- CustomCommand(GSTR1,GSTR2,1);
-
- }
-
- void StartLog(char *stringout)
- {
- FILE *GFP1;
- if(!Sopt->Toggles[3]) return;
- sprintf(LSTR,"%sNode%u/StartUpLog",Cmds->BBSLoc,Cmds->AcLvl[LVL_NODE_NUMBER]);
-
- if(!TLock(LSTR)) GFP1=fopen(LSTR,"w"); else GFP1=fopen(LSTR,"a");
- /*
- GFP1=fopen(LSTR,"r");
- if(GFP1==NULL)
- {
- GFP1=fopen(LSTR,"w");
- }
- else
- {
- fclose(GFP1);
- GFP1=fopen(LSTR,"a");
- }
- */
- if(GFP1)
- {
- fprintf(GFP1,stringout);
- fclose(GFP1);
- }
- }
-